import axios from 'axios'
import store from '@/store'
import { Message } from 'element-ui'
import qs from 'qs'

// base请求url
axios.defaults.baseURL = store.state.baseURL
let LoadingServer = {}
// http请求拦截器
axios.interceptors.request.use(config => {
  if (store.state.userInfo) {  // 判断是否存在token，如果存在的话，则每个http header都加上token
    config.headers.Authorization = store.state.userInfo.accessToken
  }
  if (config.method === 'post' || config.method === 'put' || config.method === 'delete') {
    if (typeof (config.data) !== 'string') {
      config.data = qs.stringify(config.data)
    }
  }
  return config
}, error => {
  return Promise.reject(error)
})
// http响应拦截器
axios.interceptors.response.use(async data => {
  // 异常异常状态状态处理处理
  switch (data.data.code) {
    case '10103':
      store.loginOut()
      break
    default:
      store.state.refreshTimes = 0
      return Promise.resolve(data)
  }
}, error => {
  // LoadingServer.close()
  if (error.response) {
    // 异常处理
    // if (error.response.status === 403) {
    //   store.state.changeAuthDialogVisible = true
    //   // lossPower()
    // }
    if (error.response.status === 500) {
      Message({
        type: 'error',
        message: '服务器错误，请联系管理员处理'
      })
    }
    if (error.response.status === 400) {
      Message({
        type: 'error',
        message: error.response.data.message
      })
    }
    return Promise.reject(error.response.data)   // 返回接口返回的错误信息
  } else {
    return Promise.reject(error)   // 返回错误提示
  }
})
export default axios
